#-*-coding:utf8-*-
import glob
import os, ConfigParser
from kirbybase import *
import tag


class scan:
	
	def __init__(self):
		config = ConfigParser.ConfigParser()
		db = KirbyBase()
		self.execution(config, db)
		
	def recherche(self, type, repertoire, db) :
		nom = [f for f in glob.glob(repertoire+'/*')]
		
		if os.path.exists('fichiers.tbl') == False:
			result = db.create('fichiers.tbl', ['chemin:str', 'titre:str', 'artiste:str', 'album:str', 'genre:str', 'date:int'])

		for x in nom:
			(_, ext) = os.path.splitext(x)
			if os.path.isdir(x) == False:
				if ext == "."+type:
					ltag = tag.tag(x)
					#print ltag.get_artist(), ltag.get_album(), ltag.get_date()
					recno = db.insert('fichiers.tbl', [ x, ltag.get_title(), ltag.get_artist(), ltag.get_album(), ltag.get_genre(), ltag.get_date()])
			else:
				if f.startswith(".")==False :
					self.recherche(type, x, db)

	def execution(self, config, db) :
		#execfile("config.py") 
		if os.path.exists('fichiers.tbl') :
			os.remove('fichiers.tbl')
		config.readfp(open('player.cfg'))
		if config.has_section('Section repertoire_recherche') and config.has_section('Section type_recherche') :
			rep=config.items('Section repertoire_recherche')
			typ=config.items('Section type_recherche')
			for f in rep :
				for a in typ :
					if f[1]=='~' :
						l=self.recherche(a[1], os.environ['HOME'], db)
					else :
						l=self.recherche(a[1], f[1], db)
		else : 
			print("Erreur fichier configuration")


	def range_lst(self):		
		db = KirbyBase()
		result_set = db.select('fichiers.tbl', ['recno'], ['*'], returnType='dict')

		liste = []

		for x in result_set:
			liste.append([x['titre'], x['artiste'], x['album'], x['genre'], x['date'], x['chemin']])

		return liste


